<template>
<!-- 商品渲染功能组件思路:
    1.因为在人气推荐和新鲜好物的组件,商品渲染基本一致,所以考虑提取成为组件,方便复用维护
    2.主要用到父传子的方法, 子组件中props定义传过来的数据都为数组类型,子组件中进行v-for渲染
    3. 父组件中,导入定义插入子组件,然后给子组件进行传值双向绑定,并查看效果-->
      <ul class="goods-list-top" v-if="goods.length">
      <li v-for="item in goods" :key="item.id">
        <RouterLink to="/">
        <!-- 给图片挂在自定义全局指令 v-ilazy, 在全局指令js中会给img赋值-->
          <img v-ilazy="item.picture" :src="load" alt="" />
           <!-- 商品名称 -->
          <p class="name">{{ item.title || item.name }}</p>
           <p :class="{ desc: item.alt, price: item.price }">
          <span v-if="item.price">￥</span>{{ item.alt || item.price }}
        </p>
        </RouterLink>
      </li>
    </ul>

    <!-- 数据没出来,显示骨架屏,加载处理就显示上方v-if, 没加载处理就显示这里的样式 v-else-->
    <ul class="goods-list-top" v-else>
      <li v-for="i in 4" :key="i">
        <p><XtxSkeleton width="306" height="306" bg="#eee" /></p>
        <p><XtxSkeleton style="margin-top:5px" width="306" height="42" bg="#eee" /></p>
        <p><XtxSkeleton style="margin-top:5px" width="306" height="42" bg="#eee" /></p>
      </li>
    </ul>
</template>
<script>
export default {
  // 子接父传(商品列表)
  props: {
    goods: {
      type: Array,
      // 默认传过来的是数组
      default: () => []
    }
  }
}
</script>
<style scoped lang='less'>

 //首页商品列表
.goods-list-top {
  display: flex;
  justify-content: space-between;
  height: 406px;
  li {
    width: 306px;
    height: 406px;
    background: #f0f9f4;
    // 激活效果
    transition: all 0.5s;
    &:hover {
      transform: translate3d(0, -6px, 0);
      box-shadow: 0 6px 8px rgba(0, 0, 0, 0.2);
    }
    // end
    img {
      width: 306px;
      height: 306px;
    }
    p {
      font-size: 22px;
      padding-top: 12px;
      text-align: center;
      text-overflow: ellipsis;
      overflow: hidden;
      white-space: nowrap;
    }
    .price {
      color: @priceColor;
    }
  }
}
</style>
